package com.chenjt.jvm.first.two_classLoader;

/**
 * 注释：获取ClassLoader的几种方式
 *
 * @author chenjt
 * @date 2025/6/4 14:28
 */
public class ClassLoaderTest2 {


    public static void main(String[] args) throws Exception {
        try {
            // 第一种获取ClassLoader的方式
            ClassLoader classLoader = Class.forName("java.lang.String").getClassLoader();
            // null
            System.out.println(classLoader);

            // 第二种获取ClassLoader的方式
            ClassLoader classLoader1 = Thread.currentThread().getContextClassLoader();
            // sun.misc.Launcher$AppClassLoader@18b4aac2（和ClassLoaderTest2用的是同一个）
            System.out.println(classLoader1);

            // 第三种获取ClassLoader的方式
            // 获取系统类加载器
            ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
            // 获取扩展类加载器
            ClassLoader classLoader2 = systemClassLoader.getParent();
            // sun.misc.Launcher$ExtClassLoader@1b6d3586
            System.out.println(classLoader2);

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

}
